package com.baiqian.doupo.network;

import com.baiqian.doupo.Utils;
import net.minecraft.util.ResourceLocation;
import net.minecraftforge.fml.network.NetworkRegistry;
import net.minecraftforge.fml.network.simple.SimpleChannel;

public class Networking {//注册数据包
    public static SimpleChannel INSTANCE;
    public static final String VERSION = "1.0";
    private static int ID = 0;

    public static int nextID() {
        return ID++;
    }

    public static void registerMessage() {
        //创建了一个SimpleChannel的实例，这个实例就是我们之后发包时需要操作的对象
        INSTANCE = NetworkRegistry.newSimpleChannel(
                new ResourceLocation(Utils.MOD_ID, "doupo_networking"),//这个SimpleChannel的唯一标识符
                () -> VERSION,//匿名函数，返回值是数据包的版本
                (version) -> version.equals(VERSION),//客户端可以接收的版本号
                (version) -> version.equals(VERSION)//服务端可以接收的版本号
        );//注册数据包
        INSTANCE.registerMessage(
                nextID(),//数据包的序号，不能重复
                SendPack.class,//自定义数据包的类
                SendPack::toBytes,//序列化数据包
                SendPack::new,//反序列化数据包
                SendPack::handler//接收到数据之后的一系列操作
        );
    }
}

